package org.cainiao.api.lark.dto.response.docs.docs.apireference.document;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serial;
import java.io.Serializable;
import java.util.List;

/**
 * <br />
 * <p>
 * Author: Cai Niao(wdhlzd@163.com)<br />
 */
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Data
public class LarkBlock implements Serializable {

    @Serial
    private static final long serialVersionUID = -5542708043463915600L;

    /**
     * 子块的唯一标识
     */
    private String blockId;

    /**
     * 子块的父块 ID
     */
    private String parentId;

    /**
     * 子块的子块 ID 列表
     */
    private List<String> children;

    /**
     * Block 类型<br />
     * <ol>
     *     <Li>1：页面 Block</li>
     *     <Li>2：文本 Block</li>
     *     <Li>3：标题 1 Block</li>
     *     <li>4：标题 2 Block</li>
     *     <li>5：标题 3 Block</li>
     *     <li>6：标题 4 Block</li>
     *     <li>7：标题 5 Block</li>
     *     <li>8：标题 6 Block</li>
     *     <li>9：标题 7 Block</li>
     *     <li>10：标题 8 Block</li>
     *     <li>11：标题 9 Block</li>
     *     <li>12：无序列表 Block</li>
     *     <li>13：有序列表 Block</li>
     *     <li>14：代码块 Block</li>
     *     <li>15：引用 Block</li>
     *     <li>17：待办事项 Block</li>
     *     <li>18：多维表格 Block</li>
     *     <li>19：高亮块 Block</li>
     *     <li>20：会话卡片 Block</li>
     *     <li>21：流程图 & UML Block</li>
     *     <li>22：分割线 Block</li>
     *     <li>23：文件 Block</li>
     *     <li>24：分栏 Block</li>
     *     <li>25：分栏列 Block</li>
     *     <li>26：内嵌网页 Block</li>
     *     <li>27：图片 Block</li>
     *     <li>28：开放平台小组件 Block</li>
     *     <li>29：思维笔记 Block</li>
     *     <li>30：电子表格 Block</li>
     *     <li>31：表格 Block</li>
     *     <li>32：表格单元格 Block</li>
     *     <li>33：视图 Block</li>
     *     <li>34：引用容器 Block</li>
     *     <li>35：任务 Block</li>
     *     <li>36：OKR Block</li>
     *     <li>37：OKR Objective Block</li>
     *     <li>38：OKR Key Result Block</li>
     *     <li>39：OKR 进展 Block</li>
     *     <li>40：文档小组件 Block</li>
     *     <li>41：Jira 问题 Block</li>
     *     <li>42：Wiki 子目录 Block</li>
     *     <li>43：画板 Block</li>
     *     <li>999：未支持 Block</li>
     * </ol>
     */
    private int blockType;

    /**
     * 文档的根 Block，也称页面 Block
     */
    private LarkText page;

    /**
     * 文本 Block
     */
    private LarkText text;

    /**
     * 一级标题 Block
     */
    private LarkText heading1;

    /**
     * 二级标题 Block
     */
    private LarkText heading2;

    /**
     * 三级标题 Block
     */
    private LarkText heading3;

    /**
     * 四级标题 Block
     */
    private LarkText heading4;

    /**
     * 五级标题 Block
     */
    private LarkText heading5;

    /**
     * 六级标题 Block
     */
    private LarkText heading6;

    /**
     * 七级标题 Block
     */
    private LarkText heading7;

    /**
     * 八级标题 Block
     */
    private LarkText heading8;

    /**
     * 九级标题 Block
     */
    private LarkText heading9;

    /**
     * 无序列表 Block
     */
    private LarkText bullet;

    /**
     * 有序列表 Block
     */
    private LarkText ordered;

    /**
     * 代码块 Block
     */
    private LarkText code;

    /**
     * 引用 Block
     */
    private LarkText quote;

    /**
     * 公式 Block
     */
    private LarkText equation;

    /**
     * 待办事项 Block
     */
    private LarkText todo;

    /**
     * 多维表格 Block
     */
    private LarkBitable bitable;

    /**
     * 高亮块 Block
     */
    private LarkCallout callout;

    /**
     * 群聊卡片 Block
     */
    private LarkChatCard chatCard;

    /**
     * 流程图/UML Block
     */
    private LarkDiagram diagram;

    /**
     * 文件 Block
     */
    private LarkFileBlock file;

    /**
     * 分栏 Block
     */
    private LarkGrid grid;

    /**
     * 分栏列 Block
     */
    private LarkGridColumn gridColumn;

    /**
     * 内嵌 Block
     */
    private LarkIframe iframe;

    /**
     * 图片 Block
     */
    private LarkImage image;

    /**
     * 三方 Block
     */
    private LarkIsv isv;

    /**
     * Add-ons
     */
    private LarkAddOns addOns;

    /**
     * 思维笔记 Block
     */
    private LarkMindnote mindnote;

    /**
     * 电子表格 Block
     */
    private LarkSheet sheet;

    /**
     * 表格 Block
     */
    private LarkTable table;

    /**
     * 单元格 Block
     */
    private LarkTableCell tableCell;

    /**
     * 视图 Block
     */
    private LarkView view;

    /**
     * 未支持 Block
     */
    private LarkUndefined undefined;

    /**
     * 引用容器 Block
     */
    private LarkQuoteContainer quoteContainer;

    /**
     * 任务 Block
     */
    private LarkTask task;

    /**
     * OKR Block，仅可在使用 user_access_token 时创建
     */
    private LarkOkr okr;

    /**
     * OKR Objective Block
     */
    private LarkOkrObjective okrObjective;

    /**
     * OKR Key Result
     */
    private LarkOkrKeyResult okrKeyResult;

    /**
     * OKR 进展信息
     */
    private LarkOkrProgress okrProgress;

    /**
     * OKR 进展信息
     */
    private List<String> commentIds;

    /**
     * Jira 问题
     */
    private LarkJiraIssue jiraIssue;

    /**
     * Wiki 子目录 Block
     */
    private LarkWikiCatalog wikiCatalog;

    /**
     * 画板 Block
     */
    private LarkBoard board;
}
